The invention is related to the field of data networks, and more particularly to the replication of multicast frames in a computer network switch.
Network switches generally include input and output ports to which network links are attached, a switching fabric for selectively forwarding data frames received at an input port to an output port, and data buffers used to compensate for different data rates at various points within the switch. In one configuration receive buffers are placed between the input ports and the fabric, and transmit buffers are placed between the fabric and the output ports. Among other functions, the buffers compensate for differences between the high instantaneous data bandwidth of the fabric and the relatively low instantaneous bandwidth of the ports.
Many network switches are capable of forwarding "unicast" and "multicast" frames. A unicast frame is a frame which is forwarded to a single destination address. A multicast frame, in contrast, is forwarded to two or more destinations.
Multicast operation can cause the slowdown of data traffic in the switch, because a single receive port temporarily monopolizes two or more transmit ports, making them unavailable to transmit frames received by other receive ports. The receive and transmit buffers enable the switch to receive additional frames when multicast frames are being serviced. These received frames can then be transmitted when the desired transmit ports become available. However, the accessibility of these buffers, especially the transmit buffers, diminishes as a multicast frame is replicated to all the required ports. It is therefore desirable that the rate at which data is transmitted from the fabric into the transmit buffers be reducible to accommodate multicast operation. One of the challenges in the design of switch data paths is to achieve generally high data transfer rates across the fabric, while enabling the data transfer rate to be reduced as needed to accommodate multicast operation.
One known technique for achieving these goals is to interpose a buffer large enough to hold a maximum-size frame between the fabric and the transmit buffers. This intermediate buffer is used to accumulate an entire frame from the fabric at the maximum data rate. The frame stored in this buffer is then written to the transmit buffers as required. In the case of a unicast frame the frame is written to a single transmit buffer. In the case of a multicast frame the frame is written to a transmit buffer associated with each port through which the frame is to be forwarded. No data is transferred from the fabric until the transmit buffers have written. When writing is complete, data is again allowed to flow from the fabric, and the buffer is freed for use by subsequent frames.
The above approach suffers from two drawbacks. One drawback is the large size of the intermediate buffer. The buffer must be able to hold a maximum-size frame, which can be, for example, approximately 1.5 kilobytes (KB) in a Fast Ethernet network. Such a large buffer can consume substantial area within integrated circuits that are used to implement part or all of the data path on the transmit side of the fabric. Another drawback is the delay incurred in filling and emptying the intermediate buffer. It would therefore be desirable to provide an interface between the fabric and the transmit buffers that enables high speed data transfer and that supports both unicast and multicast operation while avoiding the aforementioned problems.